home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 44 / PC Actual CD 44.iso / Linux / Cygwin / full.exe / Disk1 / data1.cab / Tools / H-i586-cygwin32 / i586-cygwin32 / include / cygwin / version.h < prev   
Encoding:
C/C++ Source or Header  |  1998-12-04  |  4.9 KB  |  128 lines

  1. /* version.h -- Cygwin version numbers and accompanying docs
  2.  
  3.    Copyright 1996, 1997, 1998 Cygnus Solutions.
  4.  
  5. This file is part of Cygwin.
  6.  
  7. This software is a copyrighted work licensed under the terms of the
  8. Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
  9. details. */
  10.  
  11. /* Cygwin versioning relatively complicated because of its status
  12.    as a shared library.  Let's start with how versioning used to be done.
  13.  
  14.    Historical versioning in Cygwin 16.0 to 19.5:
  15.  
  16.    In the olden days of Cygwin, we had a dll major and minor version
  17.    and a registry version.  The major number started at 16 because the
  18.    "b15" GNU-Win32 release of the compiler tools was out when this
  19.    scheme was started.  We incremented the DLL name frequently (for
  20.    every official release) and towards the end of this period every
  21.    release used a different shared memory area to prevent DLLs from
  22.    interfering with each other (embedding a build timestamp into the
  23.    name of the shared memory area).  This turned out to be a Bad Idea
  24.    (tm) because people needed to mingle separate releases and have
  25.    them work together more than we thought they would.  This was
  26.    especially problematic when tty info needed to be retained when an
  27.    old Cygwin executable executed a newer one.
  28.  
  29.    In the old scheme, we incremented the major number whenever a
  30.    change to the dll invalidated existing executables.  This can
  31.    happen for a number of reasons, including when functions are
  32.    removed from the export list of the dll.  The minor number was
  33.    incrememted when a change was made that we wanted to record, but
  34.    that didn't invalidate existing executables.  Both numbers were
  35.    recorded in the executable and in the dll.
  36.  
  37.    In October 1998 (starting with Cygwin 19.6), we started a new
  38.    means of Cygwin versioning: */
  39.  
  40.       /* The DLL major and minor numbers correspond to the "version of
  41.      the Cygwin library".  This version is used to track important
  42.      changes to the DLL and is mainly informative in nature. */
  43.  
  44. #define CYGWIN_VERSION_DLL_MAJOR 20
  45. #define CYGWIN_VERSION_DLL_MINOR 1
  46.  
  47.       /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are
  48.      incompatible. */
  49.  
  50. #define CYGWIN_VERSION_DLL_EPOCH 19
  51.  
  52.       /* CYGWIN_VERSION_DLL_COMBINED gives us a single number
  53.      representing the combined DLL major and minor numbers. */
  54.  
  55. #define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min)
  56. #define CYGWIN_VERSION_DLL_COMBINED \
  57.   CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_DLL_VERSION_MAJOR, CYGWIN_DLL_VERSION_MINOR)
  58.  
  59.      /* Every version of cygwin <= this uses an old, incorrect method
  60.     to determine signal masks. */
  61.  
  62. #define CYGWIN_VERSION_DLL_BAD_SIGNAL_MASK    19005
  63.  
  64.      /* We used to use the DLL major/minor to track
  65.     non-backward-compatible interface changes to the API.  Now we
  66.     use an API major/minor number for this purpose.  The arbitrary
  67.     starting version was 0.0. */
  68.  
  69. #define CYGWIN_VERSION_API_MAJOR 0
  70. #define CYGWIN_VERSION_API_MINOR 3
  71.  
  72.      /* There is also a compatibity version number associated with the
  73.     shared memory regions.  It is incremented when incompatible
  74.     changes are made to the shared memory region *or* to any named
  75.     shared mutexes, semaphores, etc.   The arbitrary starting
  76.     version was 0 (cygwin release 98r2). */
  77.  
  78. #define CYGWIN_VERSION_SHARED_DATA 1
  79.  
  80.      /* An identifier used in the names used to create shared objects.
  81.     The full names include the CYGWIN_VERSION_SHARED_DATA version
  82.     as well as this identifier. */
  83.  
  84. #define CYGWIN_VERSION_DLL_IDENTIFIER    "cygwin"
  85.  
  86.      /* The Cygwin mount table interface in the Win32 registry also
  87.     has a version number associated with it in case that is
  88.     changed in a non-backwards compatible fashion.  Increment this
  89.     version number whenever incompatible changes in mount table
  90.     registry usage are made. */
  91.  
  92. #define CYGWIN_VERSION_MOUNT_REGISTRY 1
  93.  
  94.      /* Identifiers used in the Win32 registry. */
  95.  
  96. #define CYGWIN_INFO_CYGNUS_REGISTRY_NAME "Cygnus Solutions"
  97. #define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "CYGWIN.DLL setup"
  98. #define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options"
  99. #define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "b15.0"
  100.  
  101.      /* In addition to the above version number strings, the build
  102.     process adds some strings that may be useful in
  103.     debugging/identifying a particular Cygwin DLL:
  104.  
  105.     The mkvers.sh script at the top level produces a .cc file
  106.     which initializes a cygwin_version structure based on the
  107.     above version information and creates a string table for
  108.     grepping via "fgrep '%%%' cygwinwhatever.dll" if you are
  109.     using GNU grep.  Otherwise you may want to do a
  110.     "strings cygwinwhatever.dll | fgrep '%%%'" instead.
  111.  
  112.     This will produce output such as:
  113.  
  114.     %%% Cygwin dll_identifier: cygwin
  115.     %%% Cygwin api_major: 0
  116.     %%% Cygwin api_minor: 0
  117.     %%% Cygwin dll_major: 19
  118.     %%% Cygwin dll_minor: 6
  119.     %%% Cygwin shared_data: 1
  120.     %%% Cygwin registry: b15
  121.     %%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998
  122.     %%% Cygwin shared id: cygwinS1
  123.  
  124.     This information can also be obtained through a call to
  125.     cygwin_internal(CW_GETVERSIONINFO).
  126.      */
  127.  
  128.